package demo3;

import java.time.LocalDate;
import java.util.regex.Pattern;

public class Student {
    // 学生ID
    private String studentId;
    // 姓名
    private String name;
    // 性别
    private String gender;
    // 联系方式
    private String contact;
    // 班级
    private String className;
    // 专业
    private String major;

    // 无参构造函数，生成学生ID
    public Student() {
        this.studentId = generateStudentId();
    }

    // 带参构造函数，初始化学生信息并生成学生ID
// 这个构造函数接收学生的姓名、性别、联系方式、班级名称和专业作为参数
    public Student(String name, String gender, String contact, String className, String major) {
    // 将传入的姓名参数赋值给对象的name属性
        this.name = name;
    // 将传入的性别参数赋值给对象的gender属性
        this.gender = gender;
    // 将传入的联系方式参数赋值给对象的contact属性
        this.contact = contact;
    // 将传入的班级名称参数赋值给对象的className属性
        this.className = className;
    // 将传入的专业参数赋值给对象的major属性
        this.major = major;
    // 调用generateStudentId方法生成学生ID，并将其赋值给对象的studentId属性
        this.studentId = generateStudentId();
    }

    // 生成学生ID的方法，格式为"S" + 当前日期（无横杠） + 序列号
    private String generateStudentId() {
        String date = LocalDate.now().toString().replace("-", "");
        String sequence = "001"; // 这里可以改为从输入获取
        return "S" + date + sequence;
    }

    // 验证学生ID是否合法，合法的ID只包含字母和数字
    public boolean validateStudentId() {
        return Pattern.matches("^[a-zA-Z0-9]+$", this.studentId);
    }

    // 添加学生信息的方法
    public void addStudent(String name, String gender, String contact, String className, String major) {
        this.name = name;
        this.gender = gender;
        this.contact = contact;
        this.className = className;
        this.major = major;
    }

    // 显示学生信息的方法
    public void displayStudent() {
        System.out.println("学生ID: " + this.studentId);
        System.out.println("姓名: " + this.name);
        System.out.println("性别: " + this.gender);
        System.out.println("联系方式: " + this.contact);
        System.out.println("班级: " + this.className);
        System.out.println("专业: " + this.major);
    }

    // ... getter和setter方法 ...
}